home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / amigalib.mk next >
Makefile  |  1994-10-19  |  4KB  |  130 lines

  1. # Amiga Library Services - CD Administration Makefile
  2. #
  3. # This Makefile goes in the root directory of the CD-ROM master file
  4. # tree and is responsible for doing such things as:
  5. #
  6. # (1) Building the automatically generated files for the release.
  7. # (2) "Cleaning up" the file tree.
  8. #
  9. # It is typically used from the root directory as:
  10. #
  11. #    make -f AMIGALIB.MK [targets to make]
  12.  
  13.  
  14. CDNAME =    LR_V1.0
  15. PUBLISHER =    "Amiga Library Services - (602) 917-0917"
  16. PREPARER =    "Fred Fish"
  17. IMAGE =        ISO:$(CDNAME).iso
  18.  
  19.  
  20. # The default thing to do is to just emit a message asking the user
  21. # to make a particular target.
  22.  
  23. all:
  24.     @echo "rerun make with one of:"
  25.     @echo "  [iso, rebuild]"
  26.  
  27.  
  28. # This target will rebuild all the machine generated files, after doing
  29. # a "make clobber".
  30.  
  31. rebuild: DIRLIST FILELIST CRCLIST
  32.  
  33.  
  34. # Build the ISO-9660 image using mkisofs.  Below are some typical flags
  35. # that might be used, and their meanings.
  36. #
  37. # -a    Include all files
  38. # -A    Map filenames to ISO compliant file names.
  39. # -c    Do not convert filenames
  40. # -e    Sort file extents by common extensions.
  41. # -r    Inhibit relocation of directories.
  42. # -R    Enable RockRidge extensions.
  43. # -T    Generate a file TRANS.TBL to make ISO names to original names.
  44.  
  45. iso:    CRCLIST
  46.     mkisofs -a -c -e -r -o $(IMAGE) -P $(PUBLISHER) -p $(PREPARER) \
  47.       -V $(CDNAME) $(CDNAME):
  48.  
  49.  
  50. # Build the DIRLIST, FILELIST and CRCLIST files.  Note that we ensure
  51. # that a FILELIST and CRCLIST file exist by touching them before building
  52. # the updated FILELIST, and then removing the CRCLIST file (even a
  53. # previously existing one) after building the new FILELIST, since the
  54. # CRCLIST needs to be rebuilt anyway if the FILELIST is touched.  However
  55. # since we can't compute a CRC for the CRC file itself without major
  56. # trickery, the CRCLIST is generated using a copy of FILELIST that has
  57. # had the CRCLIST line removed.  All these gyrations ensure that the
  58. # FILELIST file includes entries for both itself and the CRCLIST file,
  59. # while the CRCLIST file contains no entry for itself.
  60. #
  61. # Also note that the output is stored in a temporary file on a different
  62. # volume, so as to avoid problems on the Amiga with "find" trying to
  63. # lock CRCLIST while it is open for write.
  64.  
  65. DIRLIST:
  66.     find . -type d -print | sort | sed -e "s:^./::" -e "/^\.$$/d" >/tmp/DIRLIST
  67.     cp /tmp/DIRLIST $@
  68.     rm -f /tmp/DIRLIST
  69.  
  70. FILELIST: DIRLIST
  71.     touch $@ CRCLIST
  72.     find . -type f -print | sort | sed "s:^./::" >/tmp/FILELIST
  73.     cp /tmp/FILELIST $@
  74.     rm -f /tmp/FILELIST CRCLIST
  75.  
  76. CRCLIST: FILELIST
  77.     sed "/^CRCLIST$$/d" <FILELIST >/tmp/FILELIST
  78.     brik -Gvbf /tmp/FILELIST >$@
  79.  
  80.  
  81. # Clean out the machine generated files in preparation for rebuilding them.
  82.  
  83. clobber: clean
  84.     rm -f DIRLIST FILELIST CRCLIST
  85.     
  86. clean:
  87.     rm -f *! *~
  88.  
  89.  
  90. # Update all hardwired device names in LoadObject commands prior to releasing
  91. # a new version of this CD for which the volume name changes.  Note that we
  92. # restrict ourselves to LoadObject commands that start a line, which helps us
  93. # to avoid changing *this* file as well!
  94.  
  95. fix:    FILELIST
  96.     cat FILELIST | xargs grep -li "^[ \t]*LoadObject[ \t]*.*:" >/tmp/LoadObject.list
  97.     for i in `cat /tmp/LoadObject.list`; do \
  98.         echo -n "Checking $$i ... "; \
  99.         sed "s@LoadObject[ \t]*.*:@LoadObject $(CDNAME):@" <$$i >/tmp/tmpfile; \
  100.         if cmp $$i /tmp/tmpfile >/dev/null; then \
  101.             echo "not changed."; \
  102.         else \
  103.             cp /tmp/tmpfile $$i; \
  104.             echo "fixed."; \
  105.         fi; \
  106.     done
  107.     cat /tmp/LoadObject.list | xargs grep -i LoadObject | grep -v $(CDNAME)
  108.     rm -f /tmp/LoadObject.list
  109.  
  110.  
  111. # Examine the FILELIST and gripe about any names that are not strictly
  112. # MS-DOS conformant (8.3, uppercase alphanumeric, etc).
  113.  
  114. dosnames: FILELIST
  115.     -doschk <FILELIST
  116.     -grep "[^A-Z_0-9./]" <FILELIST >/tmp/badchars
  117.     -if test -s /tmp/badchars ; then \
  118.         echo; \
  119.         echo "WARNING - The following pathnames contain illegal MS-DOS characters:"; \
  120.         cat /tmp/badchars; \
  121.     fi
  122.     rm -f /tmp/badchars
  123.     -grep "[A-Z_0-9][A-Z_0-9][A-Z_0-9][A-Z_0-9][A-Z_0-9][A-Z_0-9][A-Z_0-9][A-Z_0-9][A-Z_0-9]" <FILELIST >/tmp/TooLong
  124.     -if test -s /tmp/TooLong ; then \
  125.         echo; \
  126.         echo "WARNING - The following pathnames contain prefixes or suffixes over 8 characters long:"; \
  127.         cat /tmp/TooLong; \
  128.     fi
  129.     rm -f /tmp/TooLong
  130.